//传纸条
#include <iostream>
using namespace std;
const int MAXN=50;
int haogan[MAXN+1][MAXN+1];
int maxhg[MAXN*2+1][MAXN+1][MAXN+1];//按右对线进行动规
                    //maxhg[k][x1][x2]表示从起点到达对角线 x+y=k上的两点（x1,k-x1)、(x2,k-x2)时，所经过的最大好感度
                    //这里k的范围为[2,m+n]
int n,m;

int main(){
    cin>>m>>n;
    for(int i=1;i<=m;i++)
        for(int j=1;j<=n;j++) cin>>haogan[i][j];
    
    maxhg[2][1][1]=0;
    for(int k=3;k<=m+n;k++){
        int start=max(k-n,1);
        int end=min(k-1,m);
        for(int x1=start;x1<=end;x1++)
            for(int x2=x1;x2<=end;x2++){
                    if (x1==x2){
                        maxhg[k][x1][x2]=maxhg[k-1][x1-1][x1]+haogan[x1][k-x1];//因为总是x2>=x1，maxhg只计算了上三角部分，故这里要写成maxhg[k-1][x1-1][x1]
                                                                            //写成maxhg[k-1][x1][x1-1]则不能得到正确结果 
                    }else {
                        
                        int px1_1=x1,px1_2=x1-1;
                        int px2_1=x2,px2_2=x2-1;
                        int t=maxhg[k-1][px1_1][px2_1];
                        t=max(t,maxhg[k-1][px1_1][px2_2]);
                        t=max(t,maxhg[k-1][px1_2][px2_1]);
                        t=max(t,maxhg[k-1][px1_2][px2_2]);
                        t+=haogan[x1][k-x1]+haogan[x2][k-x2];
                        maxhg[k][x1][x2]=t;
                    }
            }
    }
    cout<<maxhg[m+n][m][m];
}